package com.ffggffgfv.backend.service;

import com.ffggffgfv.backend.dto.ShippingAddressDTO;
import com.ffggffgfv.backend.entity.ShippingAddress;

import java.util.List;

/**
 * 收货地址服务接口
 */
public interface ShippingAddressService {

    /**
     * 添加收货地址
     *
     * @param userId     用户ID
     * @param addressDTO 收货地址信息
     * @return 添加后的收货地址
     */
    ShippingAddress add(Long userId, ShippingAddressDTO addressDTO);

    /**
     * 更新收货地址
     *
     * @param userId     用户ID
     * @param id         地址ID
     * @param addressDTO 收货地址信息
     * @return 更新后的收货地址
     */
    ShippingAddress update(Long userId, Long id, ShippingAddressDTO addressDTO);

    /**
     * 删除收货地址
     *
     * @param userId 用户ID
     * @param id     地址ID
     * @return 是否删除成功
     */
    boolean delete(Long userId, Long id);

    /**
     * 获取用户的收货地址列表
     *
     * @param userId 用户ID
     * @return 收货地址列表
     */
    List<ShippingAddress> getList(Long userId);

    /**
     * 根据ID获取收货地址
     *
     * @param userId 用户ID
     * @param id     地址ID
     * @return 收货地址
     */
    ShippingAddress getById(Long userId, Long id);

    /**
     * 设置默认收货地址
     *
     * @param userId 用户ID
     * @param id     地址ID
     * @return 是否设置成功
     */
    boolean setDefault(Long userId, Long id);

    /**
     * 获取用户的默认收货地址
     *
     * @param userId 用户ID
     * @return 默认收货地址
     */
    ShippingAddress getDefaultAddress(Long userId);
}
